class ProductoController < ApplicationController
  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
         :redirect_to => { :action => :list }

  def index
    list
    render :action => 'list'

  end

  def list
    @productos = Producto.paginate :page => params[:page], :per_page => DEFAULT_PER_PAGE, :order => 'descripcion'

  end

  def show
    @producto = Producto.find(params[:id])
  end

  def edit
    @producto = Producto.find(params[:id])
    populate_collections

  end

  def new
    @producto = Producto.new
    populate_collections

  end

  def create
    @producto = Producto.new(params[:producto])
    
    if @producto.save
      flash[:notice] = "El Producto se agrego correctamente."
      redirect_to :action => 'list'
    else
      populate_collections
      render :action => 'new'
    end

  end

  def populate_collections
    @sociedades = Catalogo.find_by_nombre('Sociedades').entradas_catalogo
    @marcas = Marca.find(:all, :order => 'nombre')
    @familias = Familia.find(:all, :order => 'nombre')
    @presentaciones = Catalogo.find_by_nombre('Litraje').entradas_catalogo
    @status = Catalogo.find_by_nombre('Status Items').entradas_catalogo
    @empresas = Empresa.find(:all, :order => 'nombre')

  end

  def update
    @producto = Producto.find(params[:id])
    
    if @producto.update_attributes(params[:producto])
      flash[:notice] = "El Producto se actualizo correctamente."
      redirect_to :action => 'show', :id => @producto
    else
      populate_collections
      render :action => 'edit'
    end

  end
  
  def txt_export
    conditions = {}
    ejecutivo = Ejecutivo.find(session[:user])
    these_children = find_children_ids(ejecutivo)
    
    if perfil_nacional?
      @productos = Producto.find(:all)
    else
      conditions[:ejecutivo_id] = these_children
      @productos = Producto.find(:all, :conditions => conditions)
      
    end
    
    report = StringIO.new
    CSV::Writer.generate(report, ',') do |csv|
      csv << ["SKU", "Sociedad", "Familia", "Marca", "Presentacion", "Descripcion",
        "Costo Cuervo", "Precio Venta", "Botellas por caja"
      ]
      @productos.each do |p|
          csv << [
            p.clave, Catalogo.valor('Sociedades',p.sociedad_id), Familia.find(p.familia_id).nombre, Marca.find(p.marca_id).nombre, Catalogo.valor('Litraje',p.presentacion_id), p.descripcion,
            p.costo_cuervo, p.precio_venta, p.botellas_caja
          ]
      end
    end
    
    report.rewind
    send_data(report.read,
      :type => 'text/csv; charset=iso-8859-1; header=present',
      :filename => 'productos.csv')
        
  end
  
  def deshabilitar
    producto = Producto.find(params[:id])
    
    producto.status_id = 0
    
    if producto.save
      flash[:notice] = "Producto deshabilitado..."
      
      redirect_to :action => "index"
    end
  end
  
  def search
    unless params[:search].blank?
      conditions = ["concatenado LIKE ?", "%#{params[:search]}%"] unless params[:search].nil?
      
      @productos = BusquedaProductos.paginate :page => params[:page], :per_page => DEFAULT_PER_PAGE,
        :order => 'descripcion', :conditions => conditions
    else
      list
    end

    render :action => 'search'    
    
  end
end
